package com.elite.annotation.selector;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.function.Predicate;

/**
 * 自定义要返回需要导入的组件
 *
 * 这个是结合@Import注解使用的
 *
 *
 *	注意如果同时实现 ImportSelector、ImportBeanDefinitionRegistrar接口它会只有一个生效，为什么？因为它源码是使用 if -> elseif 来判断类型
 */
public class MyImportSelectorTest implements ImportSelector,ImportBeanDefinitionRegistrar {
    /**
     * 返回值就是导入到容器中的组件全类名
     * @param importingClassMetadata 这个参数是标注@Import注解的所有注解信息
     *
     * @return
     */

    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        System.out.println("哈哈哈哈");
        return new String[]{"com.elite.xml.entity.Student"};
    }

    @Override
    public Predicate<String> getExclusionFilter() {
        return ImportSelector.super.getExclusionFilter();
    }
}
